package Vue;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.RenderingHints;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import Controleur.JeuMouseListener;
import Modele.Carte;
import Modele.Coordonnee;
import Modele.Partie;
import Modele.Region;

public class Jeu extends JPanel {

	private final static Image img = new ImageIcon("./src/Images/map.fw.png").getImage();
	private Partie partie;

	public Jeu(Partie partie) {
		this.partie = partie;
		initFenetre();

		initPanelPuissances(7);
		initInfoPhase();
		// initPanelParametres();
		// nitPanelCommande();
		// initPanelChat();
		setVisible(true);
		this.addMouseListener(new JeuMouseListener(this, partie));
	}

	public void initFenetre() {
		setBackground(Color.CYAN);
		Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
		setPreferredSize(size);
		setMinimumSize(size);
		setMaximumSize(size);
		setSize(size);
		setLayout(null);
		setVisible(true);
	}

	public void initInfoPhase() {
		JPanel initInfoPhase = new JPanel();
		add(initInfoPhase);
		initInfoPhase.setBounds(922, 20, 437, 60);
		initInfoPhase.setOpaque(false);
		initInfoPhase.setLayout(null);
		JLabel nomPhase = new JLabel("Rédaction des ordres", JLabel.CENTER);
		initInfoPhase.add(nomPhase);
		Font font = new Font("Arial", Font.BOLD, 20);
		nomPhase.setFont(font);
		nomPhase.setBounds(5, 0, 292, 25);
		JLabel compteur = new JLabel("13min200000");
		initInfoPhase.add(compteur);
		Font font2 = new Font("Arial", Font.BOLD, 30);
		compteur.setFont(font2);
		compteur.setBounds(310, 0, 160, 25);
	}

	public void initPanelPuissances(int nbJoueur) {
		// Panel des puissances
		JPanel haut = new JPanel();
		add(haut);
		haut.setBounds(922, 60, 437, 112);
		haut.setLayout(new BorderLayout());
		// Panel liste puissances
		JPanel panelListePuissance = new JPanel();
		panelListePuissance.setSize(437, 63);
		haut.add(panelListePuissance, BorderLayout.PAGE_START);
		panelListePuissance.setLayout(new GridLayout(1, nbJoueur));
		JButton bAn = new JButton();
		bAn.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bAn.setBackground(Color.WHITE);
		bAn.setOpaque(false);
		panelListePuissance.add(bAn);
		JButton bFr = new JButton();
		bFr.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bFr.setBackground(Color.WHITE);
		bFr.setOpaque(false);
		panelListePuissance.add(bFr);
		JButton bAll = new JButton();
		bAll.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bAll.setBackground(Color.WHITE);
		bAll.setOpaque(false);
		panelListePuissance.add(bAll);
		JButton bIt = new JButton();
		bIt.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bIt.setBackground(Color.WHITE);
		bIt.setOpaque(false);
		panelListePuissance.add(bIt);
		JButton bAH = new JButton();
		bAH.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bAH.setBackground(Color.WHITE);
		bAH.setOpaque(false);
		panelListePuissance.add(bAH);
		JButton bRuss = new JButton();
		bRuss.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		bRuss.setBackground(Color.WHITE);
		bRuss.setOpaque(false);
		panelListePuissance.add(bRuss);
		JButton nTur = new JButton();
		nTur.setIcon(new ImageIcon("./src/Images/icone_soldat_ah_min.png"));
		nTur.setBackground(Color.WHITE);
		nTur.setOpaque(false);
		panelListePuissance.add(nTur);
		// Panel choix puissances
		JPanel panelChoixPuissance = new JPanel();
		haut.add(panelChoixPuissance, BorderLayout.PAGE_END);
		panelChoixPuissance.setLayout(new GridLayout(2, nbJoueur));
		JLabel puissance1 = new JLabel("Joueur 1", JLabel.CENTER);
		panelChoixPuissance.add(puissance1);
		JLabel puissance2 = new JLabel("Joueur 2", JLabel.CENTER);
		panelChoixPuissance.add(puissance2);
		JLabel puissance3 = new JLabel("Joueur 3", JLabel.CENTER);
		panelChoixPuissance.add(puissance3);
		JLabel puissance4 = new JLabel("Joueur 4", JLabel.CENTER);
		panelChoixPuissance.add(puissance4);
		JLabel puissance5 = new JLabel("Joueur 5", JLabel.CENTER);
		panelChoixPuissance.add(puissance5);
		JLabel puissance6 = new JLabel("Joueur 6", JLabel.CENTER);
		panelChoixPuissance.add(puissance6);
		JLabel puissance7 = new JLabel("Joueur 7", JLabel.CENTER);
		panelChoixPuissance.add(puissance7);

		JLabel score1 = new JLabel("score 1", JLabel.CENTER);
		panelChoixPuissance.add(score1);
		JLabel score2 = new JLabel("score 2", JLabel.CENTER);
		panelChoixPuissance.add(score2);
		JLabel score3 = new JLabel("score 3", JLabel.CENTER);
		panelChoixPuissance.add(score3);
		JLabel score4 = new JLabel("score 4", JLabel.CENTER);
		panelChoixPuissance.add(score4);
		JLabel score5 = new JLabel("score 5", JLabel.CENTER);
		panelChoixPuissance.add(score5);
		JLabel score6 = new JLabel("score 6", JLabel.CENTER);
		panelChoixPuissance.add(score6);
		JLabel score7 = new JLabel("score 7", JLabel.CENTER);
		panelChoixPuissance.add(score7);
	}

	public void initPanelCommande() {
		JPanel panelCommandes = new JPanel();
		panelCommandes.setBounds(1203, 704, 125, 40);
		panelCommandes.setOpaque(false);
		add(panelCommandes);
		JButton lancerPartie = new JButton("Lancer la partie");
		panelCommandes.add(lancerPartie);
	}

	public void initPanelChat() {
		JPanel panelChat = new JPanel();
		panelChat.setLayout(null);
		panelChat.setBounds(33, 342, 640, 412);
		panelChat.setOpaque(false);
		add(panelChat);
		JTextArea jTextArea1 = new JTextArea();
		jTextArea1.setColumns(56);
		jTextArea1.setRows(21);
		panelChat.add(jTextArea1);
		jTextArea1.setOpaque(false);
		jTextArea1.setBounds(5, 5, 630, 340);
		JTextField jTextField1 = new javax.swing.JTextField();
		jTextField1.setText("jTextField1");
		panelChat.add(jTextField1);
		jTextField1.setBounds(0, 367, 540, 30);
		jTextField1.setOpaque(false);
		JButton envoyerMsg = new JButton("Envoyer");
		panelChat.add(envoyerMsg);
		envoyerMsg.setBounds(550, 367, 100, 30);
	}

	public void dessinerPointRavitaillement(Graphics g) {
		Graphics2D g2 = (Graphics2D) g;
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		Carte carte = partie.carte;

		for (String mapKey : carte.keySet()) {
			Region reg = carte.get(mapKey);
			Coordonnee coo = reg.getCoordoRavitaillement();
			if (coo.getX() > 0 && coo.getY() > 0) {
				g2.setColor(new Color(103, 145, 184));
				g2.fillOval(coo.getX(), coo.getY(), 15, 15);
				g2.setColor(Color.BLACK);
				g2.drawOval(coo.getX(), coo.getY(), 15, 15);
			}
			Coordonnee coo2 = reg.getCoordoUnite();
			if (coo2.getX() > 0 && coo2.getY() > 0) {
				g2.setColor(new Color(116, 140, 120));
				// g2.fillOval(coo2.getX(), coo2.getY(), 15, 15);
				g2.setColor(Color.BLACK);
				g2.drawOval(coo2.getX(), coo2.getY(), 15, 15);
			}
		}

	}

	public void paintComponent(Graphics g) {
		g.drawImage(img, 0, 0, null);
		dessinerPointRavitaillement(g);
	}
}
